#include "ADDObjetBase.h"

#include "FlotMessage.h"

#include <iostream>

using namespace std;

class ObjetStupide : public ADDObjetBase
{
public:
  ObjetStupide();
  ~ObjetStupide();
  void methode();
protected:
  DebugLevelType Interne;
  DebugLevelType Fonction;
};

int main( int argc, char* argv[] )
{
  ObjetStupide monObjetStupide;

  monObjetStupide.methode();

  return 0;
}

ObjetStupide::ObjetStupide()
  : ADDObjetBase( "ObjetStupide" ), Interne( INFO ), Fonction( DEBUG )
{
  empileNiveau( &Interne );
  func() << "Constructeur -> début" << endmsg;

  info() << "Bonjour" << endmsg;

  func() << "Constructeur -> fin" << endmsg;
  depileNiveau();
}

ObjetStupide::~ObjetStupide()
{
  empileNiveau( &Interne );
  func() << "Destructeur -> début" << endmsg;

  blank() << "Au revoir" << endmsg;

  error() << "Je suis en train de mourir" << endmsg;

  func() << "Destructeur -> fin" << endmsg;
  depileNiveau();
}

void ObjetStupide::methode()
{
  empileNiveau( &Fonction );
  func() << "méthode -> début" << endmsg;

  debug() << "Rien ne doit transparaître" << endmsg;

  func() << "méthode -> fin" << endmsg;
  depileNiveau();
}
